Computer networks often include numerous host computing devices (e.g., servers) that host a variety of computing applications that communicate with each via network connections. For example, a process running on a particular server may send a request to another server to open a network connection between the particular server and the destination server in order to send data to and receive data from the other server. In many cases, a communication pathway between two servers includes a network address translator (NAT), which translates a server's network address and port information as packets traverse the NAT.
Typically, to discover communication relationships between various servers of a network, network connections between servers are monitored and IP addresses of network packets are used to identify relationships between servers. However, when network address translation is being used for a network, servers that are separated by a NAT may not be easily identified by the IP addresses in the network connections as seen by either of the servers due to modifications made to the network address and port information. As networks continue to grow in size and complexity, relationship discovery for various components of networks becomes even more challenging, particularly when network address translation is in play.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.